/*
 * CruiserConfiguration.h
 *
 *  Created on: Jun 21, 2009
 *      Author: computer
 */

#ifndef CRUISERCONFIGURATION_H_
#define CRUISERCONFIGURATION_H_
#include "RectangularBoatShape.h"
#include "InvalidBoatConfiguration.h"
#include "Dimension.h"

class CruiserConfiguration {
public:
	CruiserConfiguration(int);
	virtual ~CruiserConfiguration();

	static CruiserConfiguration* createCruiserConfiguration(int) throw (InvalidBoatConfiguration);

	virtual RectangularBoatShape* getShape(const string&, const Point<int>&, char) const = 0;

	int getNumberConfiguration() const;
private:
	int numberConfiguration;
};

class CruiserConfiguration1 : public CruiserConfiguration {
public:
	CruiserConfiguration1();
	virtual ~CruiserConfiguration1();

	virtual RectangularBoatShape* getShape(const string&, const Point<int>&, char) const;
};

class CruiserConfiguration2 : public CruiserConfiguration {
public:
	CruiserConfiguration2();
	virtual ~CruiserConfiguration2();

	virtual RectangularBoatShape* getShape(const string&, const Point<int>&, char) const;
};

#endif /* CRUISERCONFIGURATION_H_ */
